home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / del-spry.arc / FFTDEMO.C < prev    next >
Encoding:
C/C++ Source or Header  |  1980-01-01  |  4.5 KB  |  110 lines

  1. #include    <stdio.h>
  2. /* 
  3.     DeSmet C : Bind w. De320.o
  4.     Other C's: LINK w. appropriate .LIB file
  5. */
  6. unsigned pgm1[0x88] =
  7.  
  8. /*    0 */  {  0xF900, 0x9ff, 0xF900, 0x2, 0x200, 0x0, 0x192, 0x324,
  9. /*    8 */     0x4B6, 0x647, 0x7D9, 0x96A, 0xAFB, 0xC8B, 0xE1B, 0xFAB,
  10. /*   10 */     0x1139, 0x12C8, 0x1455, 0x15E2, 0x176D, 0x18F8, 0x1A82, 0x1C0B,
  11. /*   18 */     0x1D93, 0x1F19, 0x209F, 0x2223, 0x23A6, 0x2528, 0x26A8, 0x2826,
  12. /*   20 */     0x29A3, 0x2B1F, 0x2C98, 0x2E11, 0x2F87, 0x30FB, 0x326E, 0x33DE,
  13. /*   28 */     0x354D, 0x36BA, 0x3824, 0x398C, 0x3AF2, 0x3C56, 0x3DB8, 0x3F17,
  14. /*   30 */     0x4073, 0x41CE, 0x4325, 0x447A, 0x45CD, 0x471C, 0x4869, 0x49B4,
  15. /*   38 */     0x4AFB, 0x4C3F, 0x4D81, 0x4EBF, 0x4FFB, 0x5133, 0x5269, 0x539B,
  16. /*   40 */     0x54CA, 0x55F5, 0x571D, 0x5842, 0x5964, 0x5A82, 0x5B9D, 0x5CB4,
  17. /*   48 */     0x5DC7, 0x5ED7, 0x5FE3, 0x60EC, 0x61F0, 0x62F1, 0x63EF, 0x64E8,
  18. /*   50 */     0x65DD, 0x66CF, 0x67BD, 0x68A6, 0x698C, 0x6A6D, 0x6B4A, 0x6C24,
  19. /*   58 */     0x6CF9, 0x6DCA, 0x6E96, 0x6F5E, 0x7023, 0x70E2, 0x719E, 0x7255,
  20. /*   60 */     0x7307, 0x73B5, 0x745F, 0x7504, 0x75A5, 0x7641, 0x76D9, 0x776C,
  21. /*   68 */     0x77FA, 0x7884, 0x7909, 0x798A, 0x7A05, 0x7A7D, 0x7AEF, 0x7B5D,
  22. /*   70 */     0x7BC5, 0x7C29, 0x7C89, 0x7CE3, 0x7D39, 0x7D8A, 0x7DD6, 0x7E1D,
  23. /*   78 */     0x7E5F, 0x7E9D, 0x7ED5, 0x7F09, 0x7F38, 0x7F62, 0x7F87, 0x7FA7,
  24. /*   80 */     0x7FC2, 0x7FD8, 0x7FE9, 0x7FF6, 0x7FFD, 0x7FFF, 0x0, 0x0};
  25.  
  26. unsigned pgm2[0xc9] =
  27.             { 0x7f81,
  28. /*  A00 */    0x6E00, 0x7F89, 0x5001, 0x4F01, 0x6E00, 0x7E01, 0x5001, 0x6A01,
  29. /*  A08 */     0x8004, 0x7F8E, 0x6700, 0x2000, 0x1001, 0x5002, 0x2F00, 0x5803,
  30. /*  A10 */     0x2E00, 0x5804, 0x6A01, 0x8005, 0x7F8E, 0x5019, 0x8200, 0x7F8E,
  31. /*  A18 */     0x501A, 0x8600, 0x7F8E, 0x101A, 0x501B, 0x7F89, 0x500A, 0x500B,
  32. /*  A20 */     0x6602, 0x1101, 0x100A, 0xFA00, 0xA50, 0x660B, 0x100A, 0xFB00,
  33. /*  A28 */     0xA3D, 0x201A, 0xB, 0x6714, 0x1B, 0x6716, 0x201A, 0xA,
  34. /*  A30 */     0x6715, 0x1B, 0x6717, 0x201A, 0xB, 0x7D15, 0x1B, 0x7D17,
  35. /*  A38 */     0x201A, 0xA, 0x7D14, 0x1B, 0x7D16, 0x2003, 0x5018, 0x200B,
  36. /*  A40 */     0x1018, 0xFA00, 0xA48, 0x500B, 0x2F18, 0x5818, 0xF900, 0xA3F,
  37. /*  A48 */     0x200B, 0x18, 0x500B, 0x660A, 0x1, 0x500A, 0xF900, 0xA20,
  38. /*  A50 */     0x7F89, 0x5005, 0x5006, 0x7E01, 0x5007, 0x5008, 0x2104, 0x5009,
  39. /*  A58 */     0x2007, 0x500A, 0x7, 0x5007, 0x7F89, 0x500B, 0x200A, 0x100B,
  40. /*  A60 */     0xFB00, 0xAB6, 0x2019, 0x5, 0x6713, 0x2019, 0x4, 0x1005,
  41. /*  A68 */     0x6712, 0x200B, 0x1008, 0xFA00, 0xA75, 0x2005, 0x1006, 0x5005,
  42. /*  A70 */     0x7F89, 0x1012, 0x5012, 0xF900, 0xA78, 0x2005, 0x6, 0x5005,
  43. /*  A78 */     0x200B, 0x500C, 0x2002, 0x100C, 0xFA00, 0xAB1, 0x200A, 0xC,
  44. /*  A80 */     0x500D, 0x201A, 0xD, 0x670E, 0x1B, 0x670F, 0x201A, 0xC,
  45. /*  A88 */     0x6710, 0x1B, 0x6711, 0x7F89, 0x6A12, 0x6D0E, 0x6C13, 0x6D0F,
  46. /*  A90 */     0x6C12, 0x5814, 0x7F89, 0x6D0F, 0x6C13, 0x6D0E, 0x7F90, 0x5815,
  47. /*  A98 */     0x2E10, 0xF14, 0x5910, 0x6214, 0x590E, 0x2E11, 0xF15, 0x5911,
  48. /*  AA0 */     0x6215, 0x590F, 0x201A, 0xD, 0x7D0E, 0x1B, 0x7D0F, 0x201A,
  49. /*  AA8 */     0xC, 0x7D10, 0x1B, 0x7D11, 0x200C, 0x7, 0x500C, 0xF900,
  50. /*  AB0 */     0xA7A, 0x200B, 0x1, 0x500B, 0xF900, 0xA5E, 0x200A, 0x5008,
  51. /*  AB8 */     0x2F09, 0x5809, 0x5806, 0x2003, 0x100A, 0xFC00, 0xA58, 0x7E58,
  52. /*  AC0 */     0x5001, 0x4F01, 0xF900, 0xAC2, 0x0, 0x0, 0x0, 0x0};
  53.  
  54.  
  55. int cmin,j,jh,k,i,xr[1024],xi[512],y[1024],z[1024],scale,offset;
  56.  
  57.  
  58. main()
  59. {
  60. unsigned seg320,io320;
  61. long count,jjj,jj,jjmax,jjmore;
  62. char c,ct;
  63.  
  64.  
  65. printf("Enter segment in hex ? (eg: D000) ");
  66. scanf("%x",&seg320);
  67. printf("Segment = %x\n",seg320);
  68. printf("Enter IO base address in hex ? (eg: 300) ");
  69. scanf("%x",&io320);
  70. printf("IO base address = %x\n",io320);
  71. scale = 0;
  72. offset = 100;
  73.  
  74. hres320();        
  75. hlt320(io320);   /* make sure Model 10 is in halt state */
  76.  
  77. /* Poke in FFT program */
  78. pokewf(pgm1,0,0x88,seg320);
  79. pokewf(pgm2,0x9ff,0xc9,seg320);
  80.  
  81. /* Generate a moving pulse */
  82. for ( i=0; i<1024; i++)
  83.             xr[i] =0x800;  
  84. for(i=508;i<512;i++)
  85.             xr[i]=0xf800;
  86. for(i=0;i<512;i++)         /* imag. values */
  87.             xi[i]=0;
  88.         
  89. /* Do 512 FFTs and display on CGA */
  90. for ( i=0; i<512; i++) 
  91. {
  92.     go320(io320);        /* go */
  93.     for(k=0;k<511;k++)
  94.         {
  95.         y[k]= offset - ((z[k] )>>scale) ;
  96.         }
  97.     sigpts(&y[0],511);  /* display transform */
  98.     jj = 0;
  99.     while( regin(io320) != 0x0058) {}
  100.     hlt320(io320); /* halt */
  101.     peekwf(0x201,seg320,&z[0],511);
  102.     pokewf(xi,0x600,512,seg320);  /* fill imag w. zeroes */
  103.     pokewf(&xr[i],0x200,512,seg320);  /* fill real w. data */
  104. }    
  105. co80320();    /*  80 col mode  */
  106.  
  107. }
  108.  
  109.  
  110.